
import { message,Spin,Modal  } from 'ant-design-vue' 
import store from '@/store/index'
// console.log(Spin)
axios.defaults.withCredentials = true

// 创建axios实例
const service = axios.create({
    // api的base_url
    baseURL: process.env.BASE_API,
    // 请求超时时间
    timeout: 10000,

})

// request请求拦截器
service.interceptors.request.use(config => {
    /*请求统一加上loading*/
    store.commit('showLoading')

    config.url = encodeURI(config.url);
    config.url = process.env.BASE_API + config.url;  
    //这里请求加随机数，是为了解决IE的严重缓存 
    if (config.url.indexOf('?')>0){
        config.url=config.url+'&vmf='+Math.random();
    }else{
        config.url=config.url+'?vmf='+Math.random();
    }
    // Do something before request is sent
    if (sessionStorage.getItem('token')) {
        // 让每个请求携带token--['X-Token']为自定义key 请根据实际情况自行修改
        config.headers['X-Token'] = sessionStorage.getItem('token')
    }
    // 配置请求头的content-type
    config.headers.post['Content-Type']="application/json"
    return config
}, error => {
    /*请求统一加上loading*/
    // store.commit('hideLoading')

    // Do something with request error
    // console.log(error) // for debug
    // if(error && error.response && error.response.data){
    //   Promise.reject(error.response.data)
    // }
    return Promise.reject(error.response.data)
})

// respone响应拦截器
service.interceptors.response.use(
    response => {
        // console.log(response)

        /*请求统一加上loading*/
        store.commit('hideLoading')

        if(response.data == '身份信息错误,请重新登陆'){ 
            Modal.warning({ //modal确认框，需确认用户看到系统提示
              title: '提示',
              content: '当前登录已超时，请重新登录后再尝试！',
              okText:'我知道了'
            });
        }
        else if(response.data.flag == false){
            message.error(response.data.msg) 
            return false
        }
        else if(response.data.flag == true){
            return response;
        }
        return response;
        
    },
    error => {
        // console.log(error)

        /*请求统一加上loading*/
        store.commit('hideLoading')  

        if(error.response){ 
            switch(error.response.status){
                case 400: 
                    message.error('400：请求数据格式错误')
                    break;
                case 401:
                    message.error('401：请求要求身份验证')
                     break;
                case 403:
                    message.error('403：服务器拒绝请求')
                     break;
                case 404: 
                    message.error('404：找不到请求的网页')
                     break;
                case 500:
                    message.error('500：服务器错误')
                     break;
                default:
                    message.error(error.response.status+'错误')
            }
        }
        else{
            /*request  too  long*/
            // Message({type:'error',message:'请求超时，请稍后再试！'})    
        }
      return Promise.reject(error)
    })

export default service
